# -*- coding: utf-8 -*-
# @Time    : 2024/7/1 14:22
# @Author  : yujiahao
# @File    : 08_numpy_str.py
# @description:NumPy字符串处理函数

import numpy as np

"""
NumPy 字符串处理函数示例：处理函数和Python以及Pandas都差不多。

NumPy 提供了许多字符串处理函数，它们被定义在用于处理字符串数组的 numpy.char 这个类中，这些函数的操作对象是 string_ 或者 unicode_ 字符串数组。

NumPy 处理字符串数组函数
函数名称    描述
add()       对两个数组相应位置的字符串做连接操作。
multiply()  返回多个字符串副本，比如将字符串“hello”乘以3，则返回字符串“hello hello hello”。
center()    用于居中字符串，并将指定的字符，填充在原字符串的左右两侧。
capitalize() 将字符串第一个字母转换为大写。
title()     标题样式，将每个字符串的第一个字母转换为大写形式。
lower()     将数组中所有的字符串的大写转换为小写。
upper()     将数组中所有的字符串的小写转换为大写。
split()     通过指定分隔符对字符串进行分割，并返回一个数组序列，默认分隔符为空格。
splitlines() 以换行符作为分隔符来分割字符串，并返回数组序列。
strip()     删除字符串开头和结尾处的空字符。
join()      返回一个新的字符串，该字符串是以指定分隔符来连接数组中的所有元素。
replace()   用新的字符串替换原数组中指定的字符串。
decode()    用指定的编码格式对数组中元素依次执行解码操作。
encode()    用指定的编码格式对数组中元素依次执行编码操作。

示例代码：

1. add()
   - 函数：numpy.char.add(x1, x2)
   - 示例：
     a = np.array(['Hello', 'Hi'])
     b = np.array([' World', ' There'])
     result = np.char.add(a, b)
     print("字符串连接结果:", result)
     # 输出: ['Hello World' 'Hi There']

2. multiply()
   - 函数：numpy.char.multiply(x, i)
   - 示例：
     a = np.array(['Hello ', 'Hi '])
     result = np.char.multiply(a, 3)
     print("字符串乘法结果:", result)
     # 输出: ['Hello Hello Hello ' 'Hi Hi Hi ']

3. center()
   - 函数：numpy.char.center(x, width, fillchar)
   - 示例：
     a = np.array(['Hello', 'Hi'])
     result = np.char.center(a, 10, '*')
     print("居中字符串结果:", result)
     # 输出: ['***Hello**' '****Hi****']

4. capitalize()
   - 函数：numpy.char.capitalize(x)
   - 示例：
     a = np.array(['hello', 'hi'])
     result = np.char.capitalize(a)
     print("首字母大写结果:", result)
     # 输出: ['Hello' 'Hi']

5. title()
   - 函数：numpy.char.title(x)
   - 示例：
     a = np.array(['hello world', 'hi there'])
     result = np.char.title(a)
     print("标题样式结果:", result)
     # 输出: ['Hello World' 'Hi There']

6. lower()
   - 函数：numpy.char.lower(x)
   - 示例：
     a = np.array(['HELLO', 'HI'])
     result = np.char.lower(a)
     print("小写转换结果:", result)
     # 输出: ['hello' 'hi']

7. upper()
   - 函数：numpy.char.upper(x)
   - 示例：
     a = np.array(['hello', 'hi'])
     result = np.char.upper(a)
     print("大写转换结果:", result)
     # 输出: ['HELLO' 'HI']

8. split()
   - 函数：numpy.char.split(x, sep)
   - 示例：
     a = np.array(['hello world', 'hi there'])
     result = np.char.split(a, ' ')
     print("字符串分割结果:", result)
     # 输出: [list(['hello', 'world']) list(['hi', 'there'])]

9. splitlines()
   - 函数：numpy.char.splitlines(x)
   - 示例：
     a = np.array(['hello\nworld', 'hi\nthere'])
     result = np.char.splitlines(a)
     print("按换行符分割结果:", result)
     # 输出: [list(['hello', 'world']) list(['hi', 'there'])]

10. strip()
    - 函数：numpy.char.strip(x)
    - 示例：
      a = np.array(['   hello   ', '   hi   '])
      result = np.char.strip(a)
      print("去除空字符结果:", result)
      # 输出: ['hello' 'hi']

11. join()
    - 函数：numpy.char.join(sep, x)
    - 示例：
      a = np.array(['hello', 'hi'])
      result = np.char.join('-', a)
      print("字符串连接结果:", result)
      # 输出: ['h-e-l-l-o' 'h-i']

12. replace()
    - 函数：numpy.char.replace(x, old, new)
    - 示例：
      a = np.array(['hello world', 'hi there'])
      result = np.char.replace(a, ' ', '_')
      print("字符串替换结果:", result)
      # 输出: ['hello_world' 'hi_there']

13. decode()
    - 函数：numpy.char.decode(x, encoding)
    - 示例：
      a = np.array([b'hello', b'hi'])
      result = np.char.decode(a, 'utf-8')
      print("字符串解码结果:", result)
      # 输出: ['hello' 'hi']

14. encode()
    - 函数：numpy.char.encode(x, encoding)
    - 示例：
      a = np.array(['hello', 'hi'])
      result = np.char.encode(a, 'utf-8')
      print("字符串编码结果:", result)
      # 输出: [b'hello' b'hi']
"""

# 示例代码
# 1. add()
a = np.array(['Hello', 'Hi'])
b = np.array([' World', ' There'])
result = np.char.add(a, b)
print("字符串连接结果:", result)

# 2. multiply()
a = np.array(['Hello ', 'Hi '])
result = np.char.multiply(a, 3)
print("字符串乘法结果:", result)

# 3. center()
a = np.array(['Hello', 'Hi'])
result = np.char.center(a, 10, '*')
print("居中字符串结果:", result)

# 4. capitalize()
a = np.array(['hello', 'hi'])
result = np.char.capitalize(a)
print("首字母大写结果:", result)

# 5. title()
a = np.array(['hello world', 'hi there'])
result = np.char.title(a)
print("标题样式结果:", result)

# 6. lower()
a = np.array(['HELLO', 'HI'])
result = np.char.lower(a)
print("小写转换结果:", result)

# 7. upper()
a = np.array(['hello', 'hi'])
result = np.char.upper(a)
print("大写转换结果:", result)

# 8. split()
a = np.array(['hello world', 'hi there'])
result = np.char.split(a, ' ')
print("字符串分割结果:", result)

# 9. splitlines()
a = np.array(['hello\nworld', 'hi\nthere'])
result = np.char.splitlines(a)
print("按换行符分割结果:", result)

# 10. strip()
a = np.array(['   hello   ', '   hi   '])
result = np.char.strip(a)
print("去除空字符结果:", result)

# 11. join()
a = np.array(['hello', 'hi'])
result = np.char.join('-', a)
print("字符串连接结果:", result)

# 12. replace()
a = np.array(['hello world', 'hi there'])
result = np.char.replace(a, ' ', '_')
print("字符串替换结果:", result)

# 13. decode()
a = np.array([b'hello', b'hi'])
result = np.char.decode(a, 'utf-8')
print("字符串解码结果:", result)

# 14. encode()
a = np.array(['hello', 'hi'])
result = np.char.encode(a, 'utf-8')
print("字符串编码结果:", result)
